package com.wzdigit.wms.raw.mapper.gdn;

import com.wzdigit.framework.orm.mybatis.MyBatisRepository;
import com.wzdigit.wms.raw.client.response.gdn.delivery.*;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 交接确认Mapper
 * Created by zyf on 2021/7/7 17:35
 */
@MyBatisRepository
public interface DeliveryMapper {
    //查询交接确认主档
    List<DeliveryHeaderResponse> selectDeliveryHeader(@Param("gdnNo") String gdnNo);
    //查询出库明细信息
    List<SimpleGdnDtl> selectGdnDtlList(@Param("gdnHeaderId") BigDecimal gdnHeaderId);
    //查询交接确认明细
    List<DeliveryDtlResponse> selectDeliveryDtl(@Param("gdnHeaderId") BigDecimal gdnHeaderId);
    //扫描SN后返回对应货品信息
    List<DeliveryGoodsResponse> selectOneDeliveryGoods(@Param("gdnHeaderId") BigDecimal gdnHeaderId,
                                                 @Param("goodsSn") String goodsSn);
    //根据出库主档ID查明细ID集合
    List<BigDecimal> selectgdnDtlList(@Param("gdnHeaderId") BigDecimal gdnHeaderId);
    //根据入库明细ID+条码查询是否存在拣货任务当中
    String selectPicktaskSn(@Param("gdnDtlId") BigDecimal gdnDtlId,@Param("goodsSn") String goodsSn);
    //根据入库明细ID查询对应拣货任务下的条码
    List<String> selectPicktaskSnList(@Param("gdnDtlList") List<BigDecimal> gdnDtlList);
    //根据发货主档ID+发货明细skuId查询货品信息【过滤掉不在拣货任务明细中的SN】
    List<DeliveryGoodsResponse> selectDeliveryGoods(@Param("gdnHeaderId") BigDecimal gdnHeaderId,
                                                    @Param("skuId") BigDecimal skuId);
    //更新出库主档
    int updateGdnHeader(@Param("gdnNo") String gdnNo,@Param("headerStatus") Integer headerStatus,
                        @Param("loginName") String loginName,
                        @Param("modifyDate") Date modifyDate);
    //更新出库明细
    int updateGdnDtl(@Param("gdnDtlList") List<BigDecimal> gdnDtlList,
                     @Param("dtlStatus") Integer dtlStatus,
                     @Param("loginName") String loginName,
                     @Param("modifyDate") Date modifyDate);
    //更新出库货品
    int updateGdnGoods(@Param("gdnDtlId") BigDecimal gdnDtlId,
                       @Param("goodsStatus") Integer goodsStatus,
                       @Param("goodsSn") String goodsSn,
                       @Param("loginName") String loginName,
                       @Param("modifyDate") Date modifyDate);
    //查询出库单头，简洁版，防止溢出
    SimpleGdnHeader searchGdnHeader(@Param("gdnNo") String gdnNo);
}
